The present invention relates to a hierarchical movie structure, and more specifically, to a structure for embedding a movie within another movie.
A movie generally consists of a set of tracks slaved to a movie clock. In a typical movie, the array of tracks includes a video track and an audio track. A video track consists of a sequence of samples of video data. An audio track is a sequence of samples of audio data.
Besides video and audio tracks, movies may also include tracks which store other types of information. For example, a movie may also include a text track that contains text for subtitles, a music track separate from the main audio track, and a time code track.
FIG. 1 illustrates a typical movie 100. Movie 100 includes a video track 122 that includes a sequence of video samples 102, 104, 106, 108 and 110. Movie 100 also includes a sound track 124 that includes a sequence of audio samples 112, 114, 116, 118 and 120. When movie 100 is played, playback of all of the tracks of the movie 100 are synchronized based on a movie clock. For example, at a time T1 of the movie clock, video sample 102 is being displayed and audio sample 112 is being played. At a time T2 of the movie clock, the video sample 104 is being displayed and audio sample 114 is being played. The audio and video samples that are being played at any given time on the movie clock remain the same for each performance of movie 100.
If one track of a movie is edited, some of the other tracks of the movie may also have to be edited. Consider, for example, a movie in which a character is giving a speech with the national anthem playing in the background. If one wishes to delete a portion of the speech from the movie, the corresponding sequence of video must be cut from the video track, the corresponding sequence of audio must be cut from the audio track, and the corresponding text sequence must be cut from the text track. However, to maintain the continuity and integrity of the national anthem, the corresponding music track should not be cut.
Flat movie formats provide no mechanism for keeping track of relationships between tracks. Because the editing of one track of a movie may require the editing of some but not all of the other tracks in the movie, movie editing can quickly become a difficult and complex task. Complex editing operations are even more complicated. For example, during an operation in which one movie is created by splicing together tracks of other movies, it may be virtually impossible to keep track of which tracks should and should not be edited together.
Based on the foregoing, it is desirable to simplify the movie editing process. It is further desirable to expand the application of movies beyond simple deterministic time-based media playback applications.
A hierarchical movie is provided. A hierarchical movie is a movie that contains one or more embedded movies. Embedded movies may themselves contain embedded movies. Each movie contains zero or more media sequences. Within a hierarchical movie, media sequences that should be edited together may be grouped together using embedded movies. The media sequences of a hierarchical movie may be sequenced during playback based on a different time coordinate system than the time coordinate system that governs any embedded movies. This allows a movie to contain both time-based and time-independent media sequences. Also, the relative timing of events in the movie may vary from performance to performance. The hierarchical movie structure allows movies to be used as user interface controls, and even as field-sensitive databases.
According to one embodiment of the invention, a hierarchical media container is provided. The hierarchical media container includes a first set of media sequences. One media sequence in the first set of media sequences contains and an embedded media container including a second set of media sequences.
The hierarchical media container may or may not have the same relationship to time as the embedded media container. For example, in one embodiment both the hierarchical media container and the embedded media container are time-based media containers. In another embodiment, the hierarchical media container is a time-independent media container and the embedded media container is a time-based media container. In yet another embodiment, the hierarchical media container is a time-based media container and the embedded media container is a time-independent media container.
According to another aspect of the invention, a method for providing a xe2x80x9ccontrol moviexe2x80x9d is provided. According to the method, a user may select a parameter value by interacting with a movie. The method may be used in a computer system that includes a display device.
The method includes a step for providing a media container that includes a media sequence of visual data. The media sequence includes a plurality of samples. The plurality of samples includes a set of samples. Each sample in the set is associated with a value. The method also includes steps for determining a current sample from the set of samples, establishing the value associated with the current sample as the parameter value, and displaying on the display device the image represented by the current sample.
The method also includes the steps of receiving input from the user specifying a sequencing direction, determining a next sample, the next sample being a sample of the set of samples located in the sequencing direction relative to the current sample, establishing the value associated with the next sample as the parameter value, and displaying on the display device the image represented by the next sample.
According to another aspect of the invention, a method for editing a movie is provided. According to the method, a first plurality of media sequences of the movie is stored in a first container. A second plurality of media sequences of the movie is stored in a second container. One of the first container and the second container are embedded in the other of the first container and the second container. An edit of a media sequence of the second plurality of media sequences is received from a user. All media sequences of the second plurality of media sequences are automatically edited responsive to receiving the edit.
According to another embodiment of the invention, a method for playing a movie is provided. According to the method, a first plurality of samples of a first media sequence are sequentially played. The first media sequence is stored in a first media container. A second plurality of samples of a second media sequence is also sequentially played. The second media sequence is stored in a second media container. The second media container is embedded within the first media container.
Optionally, the step of sequentially playing the first plurality of samples may be performed responsive to a first time coordinate system, while the step of sequentially playing the second plurality of samples is performed responsive to a second time coordinate system, where the first time coordinate system is different from the second time coordinate system.